//注意：从上到下，每层的数目再相加。n是一共n层。算出来的是总结点数。
function exponential(n:number) {
  let lei_ji = 0
  let base = 1
  for (let i = 0; i < n; i++) {
    lei_ji+=base
    base*=2
    
  }
  return lei_ji
}
let r = exponential(4)
console.log(r)

function di_gui(n:number):number {//每一层都要相加
  //终止条件
  if(n == 1) return 1//一共n层，第一层是1
  return di_gui(n-1) + di_gui(n-1) + 1//第n层的总节点数:n-1层，分割成2*(n-1)，再加上原来的节点1
}

let r2 = di_gui(3)
console.log(r2)

function log_n(n:number) {
  let count = 0
  while(n > 1) {
    count ++
    n = n/2
  }
  return count
}
function log_n_digui(n:number): number {
  //终止条件
  if(n <= 1) return 0
  return log_n_digui(n/2) + 1// 执行一次函数，就要加1次：操作一次n/2,就加一次次数
}
console.log(log_n(10))
